package com.mianle.userapi.util;

import org.apache.commons.lang3.StringUtils;
import org.apache.http.util.TextUtils;

/**
 * 用于身份证银行卡电话号码等掩码
 */
public class MaskUtils {

    public static String idMask(String idCardNum, int front, int end) {
        //身份证不能为空
        if (TextUtils.isEmpty(idCardNum)) {
            return null;
        }
        //需要截取的长度不能大于身份证号长度
        if ((front + end) > idCardNum.length()) {
            return null;
        }
        //需要截取的不能小于0
        if (front < 0 || end < 0) {
            return null;
        }
        //计算*的数量
        int asteriskCount = idCardNum.length() - (front + end);
        StringBuffer asteriskStr = new StringBuffer();
        for (int i = 0; i < asteriskCount; i++) {
            asteriskStr.append("*");
        }
        String regex = "(\\w{" + String.valueOf(front) + "})(\\w+)(\\w{" + String.valueOf(end) + "})";
        return idCardNum.replaceAll(regex, "$1" + asteriskStr + "$3");
    }



    /**
     * [中文姓名] 只显示第一个汉字，其他隐藏为2个星号<例子：李**>
     *
     * @return
     */
    public static String chineseName(String fullName) {
        if (StringUtils.isBlank(fullName)) {
            return "";
        }
        String name = StringUtils.left(fullName, 1);
        return StringUtils.rightPad(name, StringUtils.length(fullName), "*");
    }


    public static String nameMask(String fullName) {
        return StringUtils.leftPad(StringUtils.right(fullName, 1), StringUtils.length(fullName), "*");
    }

    public static void main(String[] args) {


        System.out.println(MaskUtils.nameMask("张三"));
        System.out.println(MaskUtils.nameMask("王某某"));
    }

}
